package controller;

import java.util.ArrayList;
import java.util.List;

import dto.AjaxDTO;
import dto.DataTableQO;
import dto.DataTableVO;
import dto.UserDTO;

import javax.servlet.http.HttpServletRequest;

import model.Constants;
import model.User;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.Constant;
import com.github.pagehelper.Page;
import com.github.pagehelper.StringUtil;

import service.IUserService;
import util.DataTableUtil;

@Controller
@RequestMapping({"/user/"})
public class UserController{
  @Autowired
  private IUserService iUserService;
  
  @RequestMapping({"getUserList"})
  @ResponseBody
  public DataTableVO<User> getUserList(String aoData){
	  DataTableQO dataTableQO = DataTableUtil.getDataTableParameterByJsonParam(aoData);
	  int sEcho = dataTableQO.getsEcho();
	  int iDisplayStart = dataTableQO.getiDisplayStart();
	  int iDisplayLength = dataTableQO.getiDisplayLength();
	  UserDTO paramUserDTO = new UserDTO();
	  DataTableVO<User> tableVO = iUserService.getUserList(paramUserDTO,iDisplayStart,iDisplayLength,sEcho);
	  return tableVO;
  }
  
  @RequestMapping({"addUser"})
  @ResponseBody
  public AjaxDTO addUser(@RequestBody User paramUser){
	AjaxDTO ajaxDTO = new AjaxDTO();
    Integer num = iUserService.saveUser(paramUser);
    if(num == 1){
    	ajaxDTO.setReturnCode(Constants.AJAX_SUCCESS);
    }else{
    	ajaxDTO.setReturnCode(Constants.AJAX_FAIL);
    }
    return ajaxDTO;
  }
  
  @RequestMapping({"findUser"})
  @ResponseBody
  public AjaxDTO findUser(String userId){
	  AjaxDTO ajaxDTO = new AjaxDTO();
	    User user = iUserService.getUser(userId);
	    if(user != null){
	    	ajaxDTO.setReturnCode(Constants.AJAX_SUCCESS);
	    	ajaxDTO.setReturnMsg(user);
	    }else{
	    	ajaxDTO.setReturnCode(Constants.AJAX_FAIL);
	    }
	    return ajaxDTO;
  }
  
  @RequestMapping({"delUser"})
  @ResponseBody
  public AjaxDTO delUser(String userId, HttpServletRequest request){
	  AjaxDTO ajaxDTO = new AjaxDTO();
	  String deleteBy = (String) request.getSession().getAttribute(Constants.SESSION_USER_ID);
	  if(StringUtils.isBlank(userId) || StringUtils.isBlank(deleteBy)){
		  ajaxDTO.setReturnCode(Constants.AJAX_FAIL);
		  return ajaxDTO;
	  }
	    Integer num = iUserService.delUser(userId, deleteBy);
	    if(num == 1){
	    	ajaxDTO.setReturnCode(Constants.AJAX_SUCCESS);
	    }else{
	    	ajaxDTO.setReturnCode(Constants.AJAX_FAIL);
	    }
	    return ajaxDTO;
  }
  
  @RequestMapping({"editUser"})
  @ResponseBody
  public AjaxDTO editUser(@RequestBody User paramUser){
	  AjaxDTO ajaxDTO = new AjaxDTO();
	    Integer num = iUserService.updateUser(paramUser);
	    if(num == 1){
	    	ajaxDTO.setReturnCode(Constants.AJAX_SUCCESS);
	    }else{
	    	ajaxDTO.setReturnCode(Constants.AJAX_FAIL);
	    }
	    return ajaxDTO;
  }
  

}

